package sf.querydsl;

import com.querydsl.sql.CUBRIDTemplates;
import com.querydsl.sql.DB2Templates;
import com.querydsl.sql.DerbyTemplates;
import com.querydsl.sql.FirebirdTemplates;
import com.querydsl.sql.H2Templates;
import com.querydsl.sql.HSQLDBTemplates;
import com.querydsl.sql.MySQLTemplates;
import com.querydsl.sql.OracleTemplates;
import com.querydsl.sql.PostgreSQLTemplates;
import com.querydsl.sql.SQLServer2005Templates;
import com.querydsl.sql.SQLServer2008Templates;
import com.querydsl.sql.SQLServer2012Templates;
import com.querydsl.sql.SQLServerTemplates;
import com.querydsl.sql.SQLTemplates;
import com.querydsl.sql.SQLiteTemplates;
import com.querydsl.sql.TeradataTemplates;
import sf.spring.util.StringUtils;

public class QueryDSLDialectUtils {
    public static SQLTemplates getSQLTemplates(String type) {
        if (StringUtils.hasLength(type)) {
            switch (type) {
                case QueryDSLSupportDatabase.H2:
                    return H2Templates.DEFAULT;
                case QueryDSLSupportDatabase.Derby:
                    return DerbyTemplates.DEFAULT;
                case QueryDSLSupportDatabase.DB2:
                    return DB2Templates.DEFAULT;
                case QueryDSLSupportDatabase.MySQL:
                    return MySQLTemplates.DEFAULT;
                case QueryDSLSupportDatabase.CUBRID:
                    return CUBRIDTemplates.DEFAULT;
                case QueryDSLSupportDatabase.HSQLDB:
                    return HSQLDBTemplates.DEFAULT;
                case QueryDSLSupportDatabase.Oracle:
                    return OracleTemplates.DEFAULT;
                case QueryDSLSupportDatabase.SQLite:
                    return SQLiteTemplates.DEFAULT;
                case QueryDSLSupportDatabase.Firebird:
                    return FirebirdTemplates.DEFAULT;
                case QueryDSLSupportDatabase.PostgreSQL:
                    return PostgreSQLTemplates.DEFAULT;
                case QueryDSLSupportDatabase.SQLServer:
                    return SQLServerTemplates.DEFAULT;
                case QueryDSLSupportDatabase.SQLServer2005:
                    return SQLServer2005Templates.DEFAULT;
                case QueryDSLSupportDatabase.SQLServer2008:
                    return SQLServer2008Templates.DEFAULT;
                case QueryDSLSupportDatabase.SQLServer2012:
                    return SQLServer2012Templates.DEFAULT;
                case QueryDSLSupportDatabase.Teradata:
                    return TeradataTemplates.DEFAULT;
                case QueryDSLSupportDatabase.SQLDEFAULT:
                    return SQLTemplates.DEFAULT;
                default:
                    break;
            }
        }
        return SQLTemplates.DEFAULT;
    }
}
